<?php
  namespace app\api\controller;
  use app\api\common\Common;
  use app\api\common\ApiErrDesc;
  
  class UploadFile extends Common{

    /**
     * 在上传文件之前都会检查一下，文件是否存在，存在则不用在次发送文件了。
     */
    public function check_existence(){
      $data = $this->params;
      $data['uid'] = 5; // TEST
      $nameArr = explode('|', $data['fileNames']);
      $resData = array();
      foreach($nameArr as $k => $v){
        if(file_exists('uploads/fileUpload/'.$data['uid'].'/'.$v)){
          $resData[$v] = filesize('uploads/fileUpload/'.$data['uid'].'/'.$v);
        }else{
          $resData[$v] = false;
        }
      }
      $this->return_msg(ApiErrDesc::SUCCESS[0], ApiErrDesc::SUCCESS[1], $resData);
    }


    /**
     * 断点续传文件上传
     * 注意一点就是：前端在拖拽文件到相应的地方后，会自动校验文件是否上传，对应前面的check_existence();
     */
    public function upload(){
      $data = $this->params;
      $data['uid'] = 5; // TEST
      $res_arr = array();
      $filePathCreate = 'uploads/fileUpload/'.$data['uid'].'/';
      if(!is_dir($filePathCreate)){
        mkdir($filePathCreate);
      }
      /* 
      * file_put_contents (file, data, mode)
      * file: 必需。规定要写入数据的文件。如果文件不存在，则创建一个新文件。
      * data: 必需。规定要写入文件的数据。可以是字符串、数组或数据流。
      * mode: 可选。规定如何打开/写入文件。可能的值：FILE_USE_INCLUDE_PATH、FILE_APPEND、LOCK_EX
      */
      file_put_contents($filePathCreate.$data["fileName"], file_get_contents($_FILES["file"]["tmp_name"]), FILE_APPEND);
      $res_arr['result'] = true;
      $this->return_msg(ApiErrDesc::SUCCESS[0], ApiErrDesc::SUCCESS[1], $res_arr);
    }
  }